home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu038.dms / pu038.adf / DiskSalv.doc < prev    next >
Text File  |  1989-04-17  |  28KB  |  624 lines

  1.  
  2.  
  3.                         D i s k S a l v
  4.  
  5.                  AmigaDOS Disk Salvage Program
  6.  
  7.                  Copyright 1989 by Dave Haynie
  8.  
  9.                   Version 1.40 for AmigaOS 1.3
  10.                
  11.  
  12. INTRODUCTION
  13.  
  14.     DiskSalv V1.40 is a disk recovery program for all Amiga file system
  15. devices that use either the AmigaOS V1.2/V1.3 Standard File System or the
  16. AmigaOS V1.3 Fast File System.  DiskSalv will scan a bad disk volume for
  17. anything that can be recovered, and will restore these items to any
  18. AmigaDOS volume.  It does not make any attempt to fix the bad device in
  19. place; thus, any file that can't be restored with DiskSalv might possibly
  20. be restored with an alternate method. 
  21.  
  22.     DiskSalv V1.40 fixes all bugs found in DiskSalv V1.32 (there might
  23. still be bugs, but no one found them...).  There were two main V1.32 bugs. 
  24. First of all, a bug in the processing of logical vs.  physical volumes
  25. caused DiskSalv's file size checking to get switched off at the wrong
  26. times.  This caused OS requesters to show up when disk volumes got full,
  27. something DiskSalv was not supposed to let happen.  The sizing check now
  28. works properly, and only gets switched off automatically when output is
  29. directed to RAM:.  The other DiskSalv V1.32 bug was incorrect handling of
  30. circular directories, which would usually result in a crash during the
  31. scanning process.  DiskSalv will now disallow a child of a directory to be
  32. added as that directory's parent.  One minor fix was also added to the
  33. scanning routine to allow ^C cancellation of the scan when the QUICK or
  34. LOMEM options are selected. 
  35.  
  36.     DiskSalv V1.40 also contains some enhancements.  It no longer
  37. allocates memory in tiny little chunks that can cause RAM fragmentation,
  38. but instead allocates a few large chunks of memory.  It also uses much
  39. less stack memory, so it will actually salvage a typical floppy with the
  40. standard 4K stack of the Amiga shell.  The DiskSalv FORMAT routine, which 
  41. would crash in some cases, has been completely removed.  When formatting is 
  42. requested now, DiskSalv will call the AmigaDOS Format command to actually do
  43. the work.  It looks for Format in the current directory, then it checks the 
  44. "SYS:System" directory.  DiskSalv V1.40 MUST have access to both Format and
  45. L:Disk-Validator in order to format a disk.  The START and STOP options are
  46. now more robust; START can be given a negative relative offset, STOP knows
  47. about the ROOT now, and either can express disk size as a percentage instead
  48. of in blocks, if desired. 
  49.  
  50.     Finally, DiskSalv has some new options, which will be described in
  51. greater detail later on.  The first of these is the NODOS option, which
  52. solves a problem that sometimes comes up when you have a disk that can hang
  53. or crash to OS.  Another new option is the FILE option, which allows you to
  54. specify a filename pattern to match against during the scanning phase. 
  55. Finally, the LOMEM option drops DiskSalv memory usage to a minimum, at the
  56. expense of some speed and features. 
  57.  
  58.  
  59. 1. THE BASICS OF DISKSALV V1.40
  60.  
  61.     DiskSalv V1.40 (from here on referred to as "DiskSalv") is a
  62. program designed to "salvage" any files and directories from a damaged
  63. AmigaDOS file system device to a good one.  DiskSalv is run from an Amiga
  64. CLI, and in the simplest case is used very much like the AmigaDOS
  65. "DiskCopy" program.  For example, to recover files from a bad disk in DF0:
  66. and restore them on a good disk DF1:, the user will type:
  67.  
  68.     1> DiskSalv FROM DF0: TO DF1:
  69.  
  70. Here the "FROM" and "TO" keywords are fully optional if the ordering of the
  71. input and output devices is kept INPUT OUTPUT.  The following line would
  72. also achieve the same result:
  73.  
  74.     1> DiskSalv TO DF1: FROM DF0:
  75.  
  76. In either case, DiskSalv will immediately print to the shell's screen:
  77.  
  78.     DiskSalv V1.40 Copyright © 1989 by Dave Haynie
  79.  
  80.     Salvage FROM Device DF0: TO Path DF1:
  81.  
  82.       DEVICE     =    trackdisk.device   (DF0:)
  83.       UNIT       =        0    FLAGS      =        0
  84.       HEADS      =        2    SECTORS    =       11
  85.       LOCYL      =        0    HICYL      =       79
  86.           LOBLOCK    =        0    HIBLOCK    =     1759
  87.       RESERVED   =        2    MEMTYPE    =        3
  88.       ROOT BLOCK =      880    DISK SIZE  =     1760
  89.  
  90.     Scan Range: START 2, STOP 1759, Expecting Standard FileSystem
  91.  
  92.     Should I continue [Y]
  93.  
  94. At this point, a simple RETURN entered will start up the recovery process,
  95. while an "N" followed by a RETURN will abort the recovery. 
  96.  
  97. 1.1 The Scan Phase
  98.  
  99.     If we proceed with the recovery, DiskSalv will start the first
  100. phase of it's recovery.  At this point, the input device will be scanned
  101. from start to finish (blocks 2 though 1759).  DiskSalv is looking for valid
  102. AmigaDOS file or directory blocks.  A small Intuition window called
  103. "DiskSalv Scan" will open on the Amiga's WorkBench screen.  There are three
  104. columns in this window, BLOCK, NODES, and TYPE.  As each block is read,
  105. it's number is displayed under BLOCK.  This happens pretty quickly;
  106. ordinarily, there's no need to examine individual block numbers anyway. 
  107. The TYPE field indicates whether the block is a file (FILE), root directory
  108. (ROOT), user directory (UDIR), data block (DATA), unused block (FREE),
  109. unknown block type (????), or bad block (ERR!).  Note that under the new
  110. AmigaDOS V1.3 Fast FileSystem, there's no way to distinguish between DATA
  111. and FREE blocks during a scan, so these are always displayed as unknown
  112. blocks.  The final field, NODES, indicates the number of user directory or
  113. file blocks that have been located so far. 
  114.  
  115.     The other feature of this phase is the file list, which takes place
  116. on the screen.  The shell window will indicate "Building Directory Map...",
  117. and the name of each directory and file that's found will be displayed
  118. under this heading.  Note that at any time during this scanning phase,
  119. clicking the Scan Window close gadget will abort the program.  If the QUICK
  120. or LOMEM operations are selected, no visual account of the block scan
  121. number will be displayed. 
  122.  
  123. 1.2 The Directory Resolution Phase
  124.  
  125.     The next phase is usually a very short one.  The scanning window
  126. will disappear, and the shell window will indicate that DiskSalv is
  127. "Resolving Stray Directories...".  During the scanning phase, when DiskSalv
  128. finds a file block, it attaches it to a directory in it's directory list. 
  129. To make the scan phase fast, however, DiskSalv only does a single linear
  130. pass over the input disk during that phase.  If the parent directory for a
  131. file or subdirectory isn't available, DiskSalv makes a dummy directory for
  132. it in it's directory list. 
  133.  
  134.     Normally, all of those dummy directories get changed into normal
  135. ones as they are found in the scan.  However, there are some DiskSalv modes
  136. (covered later) that may result in only a partial scan being performed.  In
  137. this case, valid directory entires may be outside of the scanning range. 
  138. In order to get the proper names of such directories, the resolution phase
  139. goes through the directory entires in it's dummy list and tries to find
  140. real directories to match them.  If a directory can't be found, it was
  141. probably located on a bad block.  That's no problem, all that's lost is the
  142. name of that directory, not any of it's contents. 
  143.  
  144. 1.3 The Directory Pruning Phase
  145.  
  146.     The next pass happens purely in memory, and it attempts to remove
  147. any empty directories from the directory list.  There are rarely any empty
  148. directories that need to be restored, and there are some DiskSalv options
  149. that tend to force a number of empty directories to be created in the
  150. directory list.  This pass can be overridden if empty directories are
  151. deemed important. 
  152.  
  153. 1.4 The Disk Salvage Phase
  154.  
  155.     In this next phase, the disk structure is actually restored to the
  156. output device.  This proceeds until stopped via ^C, or until the output
  157. device is full.  If the output device fills up, a new one can be inserted
  158. if the device supports removable media.  The most common form of this would
  159. be floppy disk. 
  160.  
  161.     There are certain output devices which may not return proper volume
  162. sizing information through AmigaDOS.  For instance, the RAM: device always
  163. says it's full.  A DiskSalv option allows output size checking to be turned
  164. off, and it's automatically selected if the output device is RAM:. 
  165.  
  166.     DiskSalv uses normal AmigaDOS I/O routines to re-create the
  167. recovered files.  Thus, it may restore to a subdirectory instead of the
  168. root of a device.  If a subdirectory is specified that doesn't exit,
  169. DiskSalv will create it.  Similarly, DiskSalv may output to a logical
  170. volume name instead of a device name. 
  171.  
  172.     On occasion, a file will be found that DiskSalv considers to be
  173. suspect.  The screen output will indicate the problem, but that tends to
  174. scroll by very quickly.  DiskSalv will now add a FileNote to any file that
  175. it suspects, indicating its concern.  This option can be overridden. 
  176.  
  177.     Finally, there are occasions under which there may be file name
  178. collisions.  If the output device has a file by the same name as one that's
  179. on the input device, such a collision occurs.  DiskSalv won't overwrite
  180. files.  Instead, the colliding file is renamed before it is rebuilt.  An
  181. extension is added to it, starting at "-0" and going on up to "-100" as
  182. collisions continue to occur. 
  183.  
  184.  
  185. 2. DISKSALV REFERENCE GUIDE
  186.  
  187.     The DiskSalv program is run and controlled completely via
  188. command-line arguments.  It should run without problem from all Amiga shell
  189. programs; it currently can't be run from the WorkBench. 
  190.  
  191. 2.1 Command-Line Options
  192.  
  193.     There are quite a few options in DiskSalv that'll modify in various
  194. ways the recovery action described above.  The syntax for the DiskSalv
  195. command line is given as:
  196.  
  197. Usage: DiskSalv [FROM] InDev: [TO] OutPath [[NO]FFS] [QUICK] [NOCHECK]
  198.                 [NOTAG] [FORMAT] [LOMEM] [NODOS] [NOTD] [FILE pattern]
  199.                 [NOPRUNE] [START [-]num[%]|ROOT] [STOP [+]num[%]|ROOT]
  200.                 [ASK] [INFO] [MASK [a|A][r|R][w|W][e|E][d|D][p|P][s|S]]
  201.  
  202. In each case, text in brackets ("[]") indicates an optional parameter, text
  203. outside of brackets indicates a required parameter, and "|" indicates a
  204. choice of parameters.  The options are:
  205.  
  206. ASK
  207.  
  208.     This options allows the Disk Salvage pass to proceed interactively
  209.     instead of automatically.  The user is prompted at each file or
  210.     directory.  A reply of 'Y' will recover that file or move into that
  211.     directory, a reply of 'N' will skip that item.  Replying '?' will
  212.     list all the valid options.  A reply of 'A' will recover everything
  213.     left at the current directory level; a reply of 'U' will skip
  214.     everything left at the current directory level.  Finally, a reply
  215.     of 'Q' will quit the program completely. 
  216.  
  217. [NO]FFS 
  218.     This allows the disk's filesystem to be selected.  Normally,
  219.     DiskSalv can tell the difference between a fast and standard
  220.     filesystem disk, and will act accordingly.  However, if that disk
  221.     is badly damaged, this assumption may be incorrect.  In such a
  222.     case, DiskSalv will usually assume standard filesystem.  If it's
  223.     assumption is wrong, the filesystem can be forced with these
  224.     options. 
  225.  
  226. FILE pattern
  227.     Cause the DiskSalv scanner to only record files that match the
  228.     given pattern, which is a standard AmigaDOS filename pattern.  This
  229.     pattern specification has no effect on any directories that might
  230.     be examined, since DiskSalv won't necessarily know the names of all
  231.     directories until the scan phase is complete. 
  232.  
  233. FORMAT
  234.     This forces the output device to be formatted before any output
  235.     files are directed to it.  If the output device isn't a device, but
  236.     instead a handler, DiskSalv will return an error message if this
  237.     option is selected; it only knows how to format devices.  DiskSalv
  238.     will also offer the option of formatting the output device if it
  239.     fills up during a recovery.  An important note on all DiskSalv
  240.     formatting options -- the disk validator and the Format command
  241.     MUST be accessible for the format to work.  If they're not
  242.     available, DiskSalv will refuse to format an output disk.  If you
  243.     specify the FORMAT option on the command line, DiskSalv will return
  244.     with an error message if these programs can't be located.  If you
  245.     don't specify FORMAT and they can't be found, a warning will be
  246.     issued.  If you go on from there, everything will work OK, but
  247.     you'll never be offered the FORMAT option.  The best way to insure
  248.     that it's present is to have the L: directory with the disk
  249.     validator in it on the same disk that DiskSalv is run from, and the
  250.     Format command in the same directory as DiskSalv.  It may be
  251.     necessary to Assign L: to that disk.  Depending on the shell you
  252.     use to launch DiskSalv, the return code of the Format command it
  253.     spawns may not be correct.  DiskSalv will notify you if it thinks
  254.     a format didn't work; an "Ignore" option here lets you continue on
  255.     if you believe it did, indeed, work.  Finally, if you have the
  256.     CNC: device from Bill Hawes' mounted, Format will use that for it's
  257.     display instead of a CON: window.
  258.  
  259. FROM InDev: 
  260.     This option allows an input device to be specified.  The input
  261.     device must be a real device, not a path specification.  The FROM
  262.     keyword is optional, but can be used to allow FROM and TO
  263.     specifications to be given in any order. 
  264.  
  265. INFO
  266.     The INFO option lists some information about the program, it's
  267.     distribution, bug reporting, and other stuff.  It should be
  268.     specified in the command line without any other options. 
  269.  
  270. LOMEM
  271.     This tells DiskSalv to use as little memory as it can get away
  272.     with.  As with the QUICK option, no scanning display is generated. 
  273.     However, some operations may take longer than the norm.  DiskSalv
  274.     normally uses 2 bits per device block, 8 bytes for each file entry
  275.     loaded into its file lists during a scan, and 52 bytes for each
  276.     directory entry.  This option, among other things, changes that
  277.     fixed block usage to 1 bit per device block, lowers the chunk
  278.     size used by the memory allocator, and lowers the maximum length
  279.     allowed for path names.
  280.  
  281. MASK [a|A][r|R][w|W][e|E][d|D][p|P][s|S]
  282.     This options allows the user to specify a protection bit mask as a
  283.     filter.  The supported bits are "A" for Archive, "R" for Read, "W"
  284.     for Write, "E" for Execute, "D" for Delete, "P for Pure, and "S"
  285.     for Script.  Specifying the bit in lowercase indicates a mask for
  286.     that bit not set, a bit in uppercase indicates a mask for that bit
  287.     set.  For example, specifying "MASK a" will scan for only those
  288.     files that don't have the archive bit set; "MASK WD" will scan only
  289.     for those files with Write and Delete permission enabled.  Any bits
  290.     not specifically MASKed can be in either state. 
  291.  
  292. NOCHECK
  293.     This option prevents the output device's size from being checked. 
  294.     Normally this would only be used with a device that doesn't
  295.     properly report it's size, and it's automatically invoked with
  296.     output to RAM:. 
  297.  
  298. NODOS
  299.     Prevents DiskSalv from accessing DOS at any level on the input
  300.     disk.  Normally, DiskSalv does a DOS inhibit on the input disk to
  301.     prevent any other process from modifying the disk during the
  302.     recovery process, since such modifications could damage the disk or
  303.     interfere with the recovery process.  This option is best used when
  304.     trying to recover from a disk that can crash DOS when accessed. 
  305.  
  306. NOPRUNE
  307.     This option prevents the directory pruning phase from taking place. 
  308.     If the input device contains empty directories that must be
  309.     restored, use this option. 
  310.  
  311. NOTAG
  312.     This option prevents DiskSalv from tagging possibly damaged files
  313.     with a FileNote explaining it's concern. 
  314.  
  315. NOTD
  316.     DiskSalv does some special optimizations when it's recovering from
  317.     a floppy disk device based on the "trackdisk.device" driver.  While
  318.     there's currently no real use for this option, a future version of
  319.     "trackdisk.device" might possibly not work with these enhancements. 
  320.     This option will turn the enhancements off, making a recovery from
  321.     the "trackdisk.device" work exactly like any other recovery. 
  322.  
  323. QUICK
  324.     This option performs a quick scan.  The scan speed is improved by
  325.     not displaying the block number and type information for every
  326.     block.  This doesn't make as much difference as it did in the
  327.     earlier versions of DiskSalv; the "DiskSalv Scan" window routine
  328.     has been greatly sped up this display. 
  329.  
  330. START [-]num[%]|ROOT
  331.     This option allows the scanning routine to start at any place on
  332.     the input device.  This position is either given as a decimal block
  333.     number, a percentage of the disk, or as the string ROOT.  The start
  334.     value is normally an absolute disk position, but is instead
  335.     relative to the STOP position if the "-" option is supplied.  If
  336.     relative values for both START and STOP are given, they're taken to
  337.     be relative from the disk's root.  Since many files are clustered
  338.     after the directory root on most disks, it's often possible to get
  339.     many of a disk's files back starting the scan there instead of at
  340.     the start of the disk. 
  341.  
  342. STOP [+]num[%]|ROOT
  343.  
  344.     This option allows the scanning routine to stop at any place on the
  345.     input device.  This position is either given as a decimal block
  346.     number, a perentage of the disk, or as the string ROOT.  The stop
  347.     value is normally an absolute disk position, but is instead
  348.     relative to the START position if the "+" option is supplied.  If
  349.     relative values for both START and STOP are given, they're taken to
  350.     be relative from the disk's root. 
  351.  
  352. TO OutPath 
  353.     This option allows an output path to be specified.  The output
  354.     device can be any valid AmigaDOS file device specification.  The 
  355.     TO keyword is optional, but can be used to allow FROM and TO
  356.     specifications to be given in any order.
  357.  
  358. 2.2 Input Device Specification
  359.  
  360.     DiskSalv requires a DOS name specification for its input device.
  361. Such a name is automatically created by the operating system for each
  362. 3.5" disk drive attached, and for some hardware add-ons during automatic
  363. device binding process initiated by the AmigaDOS BindDrivers command.  
  364. Other DOS names are created by the Mount command and the MountList file.
  365.  
  366.     On occasion, a few problems show up in this theory.  First of all,
  367. a device like a hard disk may store its physical layout, necessary to
  368. create a DOS node, on the disk itself.  If the disk is damaged, this 
  369. special information may not be available any longer, and as a result, the
  370. hard disk's device driver won't be able to create a DOS node.  In this
  371. case, the user will have to create a MountList entry by hand for the 
  372. device.  This device will then be Mount-ed, and DiskSalv can take over
  373. from there.
  374.  
  375.     The other problem I've found is that allowing AmigaDOS to access
  376. a bad volume can occasionally result in a system crash.  With a mounted
  377. volume, that's no big problem; AmigaDOS won't usually try to access the
  378. device, or even load the device driver, until that drive is actually
  379. accessed.  It's OK, and in fact required by DiskSalv, to just "Mount"
  380. the device.  In some cases, the File System (especially FastFileSystem)
  381. will try to access a disk as its being initialized.  This can cause a
  382. problem if the disk is damaged in such a way as to violate important
  383. assumptions the File System makes about the disk.  The NODOS options will
  384. circumvent this by eliminating any File System level access of the device
  385. by DiskSalv.  Floppies can be a bit more dangerous.  A floppy will start 
  386. up the File System's validator nearly as fast as it's inserted.  The
  387. proper damage could crash or lockup the machine, but there's no way to
  388. prevent the floppy's File System, or the DiskChange interrupt from the
  389. trackdisk.device, from being sent until DiskSalv has been started.  Once
  390. DiskSalv reaches the "Should I Continue [Y]" prompt, such damaged 
  391. floppies can be safely inserted.  It's important here not to use the
  392. NODOS option.
  393.  
  394.  
  395. 3. WARNINGS AND ERRORS
  396.  
  397.     DiskSalv produces a variety of error messages when it thinks 
  398. something is wrong.  These fall into two basic classes.  First of these
  399. are fatal errors that may result from the program being run incorrectly 
  400. in some way.  This results in the program terminating with a message of 
  401. some kind.  The second class are warning messages that result due to some 
  402. condition DiskSalv reacting to, but don't actually stop the program from 
  403. executing.
  404.  
  405. 3.1 Fatal Errors
  406.  
  407. "Illegal Command Line Option"
  408.  
  409.     You typed an invalid option at the cli.  DiskSalv options are case
  410. independent, but must match exactly letter for letter.
  411.  
  412. "DiskSalv User Abort"
  413.  
  414.     You terminated DiskSalv with a ^C or other user-invoked abort.
  415.  
  416. "Must have input and output objects"
  417.  
  418.     You didn't specify both a "TO" and a "FROM" device on the command
  419. line.  There are no default input or output devices.
  420.  
  421. "Input DEVICE Not Mounted"
  422.     
  423.     The input device specified does not appear in the system device
  424. list.  It's possible that you just forgot to mount the device.
  425.  
  426. "START/STOP flag conflict"
  427.  
  428.     This is usually the result of specifying a START block greater than
  429. your STOP block.  DiskSalv won't scan a disk backwards.  It's also possible
  430. that you specified an out-of-range block.
  431.  
  432. "Out of Memory"
  433.  
  434.     If DiskSalv can't get the memory it needs, this error message will
  435. result.  This will only happen if it can't get memory that's absolutely
  436. necessary.  On systems with lesser memory, some features may no be invoked
  437. if the memory in the system gets too low, but this will not result in an
  438. error message.
  439.  
  440. "DiskSalv cannot format output device"
  441.  
  442.     You have requested the FORMAT option for an output device that
  443. DiskSalv doesn't know about, format-wise.  DiskSalv only knows how to
  444. format standard devices, like "trackdisk.device", "ramdrive.device",
  445. "hddisk.device", etc.
  446.  
  447. "Input and output object collision"
  448.  
  449.     You've specified the same device for both input and output; that's
  450. not permitted.
  451.  
  452. "Cannot get 'intuition.library'"
  453.  
  454.     For some reason, the inutition.library cannot be opened by DiskSalv.
  455.  
  456. "Cannot get 'dos.library'"
  457.  
  458.     For some reason, the dos.library can't be opened by DiskSalv.
  459.  
  460. "Cannot create message port"
  461.  
  462.     DiskSalv can't create the message port it needs for using the
  463. input device driver directly.
  464.  
  465. "Cannot find the disk validator"
  466.  
  467.     You have requested the FORMAT option for an output device, but
  468. DiskSalv can't find the disk validator necessary to validate that device
  469. after formatting it.  The disk validator is found in the "L:" directory.
  470. This mistake is most commonly made when recovering your normal system
  471. disk.  
  472.  
  473. "Cannot find the disk formatter"
  474.  
  475.     You have requested the FORMAT foption for an output device, but
  476. DiskSalv can't find the disk format command necessary to format that device.
  477. The format command may be located in the current directory or on SYS:System.
  478. This mistake is most commonly made when recovering your normal system
  479. disk.  
  480.  
  481. "Cannot create I/O port"
  482.  
  483.     DiskSalv can't create the I/O port it needs for using the input 
  484. device driver directly.
  485.  
  486. "Cannot set up break trap routine"
  487.  
  488.     You'll probably never see this one, but it could be an early
  489. indication of severe low memory conditions.
  490.  
  491. "Invalid AmigaDOS file pattern specified"
  492.  
  493.     You've specified the FILE option, but supplied an invalid pattern
  494. string.
  495.  
  496. 3.2 Run-Time Warnings
  497.  
  498. "No formatting, cannot find disk validator"
  499.  
  500.     The disk validator isn't around, but since you may not need it,
  501. we go ahead.  If this warning is printed, you lose the option to format
  502. output disks during a recovery.
  503.  
  504. "No formatting, cannot find disk formatter"
  505.  
  506.     The disk format command isn't around, but since you may not need
  507. it, we go ahead.  If this warning is printed, you lose the option to
  508. format output disks during a recovery.
  509.  
  510. "Resolving link conflict # <-> #"
  511.     
  512.     This warning results from a condition on there input disk where, for
  513. a data block on that disk, the block's file header link and block chain link
  514. don't match.  DiskSalv tries to resolve this conflict by choosing the best
  515. of the two, but it is possible that neither is the proper choice.  This will
  516. only happen with Standard FileSystem; there is no data block chain link in
  517. the Fast FileSystem.
  518.  
  519. "Bad Extension Block - No More Link Check"
  520.  
  521.     Under Standard file system, an Extension block can't be found.  We
  522. can still proceed.  Under Fast FileSystem, this could never happen.
  523.  
  524. "Possible Disk Fault, File may be incomplete"
  525.  
  526.     This is printed for each file that was recovered from a partially
  527. bad trackdisk sector.
  528.  
  529. "Disk Fault, File may be incomplete"
  530.  
  531.     Means pretty much the same thing as the last one, only that this
  532. time we're certain that a block be sure about that.
  533.  
  534. "Double Disk Fault, File truncated"
  535.  
  536.     There have been serious errors in the current file, to the extent
  537. that the file may not be recoverable.
  538.  
  539. 4. KNOWN BUGS
  540.  
  541.     None
  542.  
  543.  
  544. 5. THE FUTURE OF DISKSALV
  545.  
  546.     The next release of DiskSalv is already in development, so don't
  547. consider this a dead end.  I am actively seeking any and all feedback on
  548. the subject.  Please, if there's something that doesn't work right, or
  549. something DiskSalv isn't doing that you'd like to see it do in the future,
  550. please let me know.  I can't put it in there if I don't think of it.
  551.  
  552.  
  553. 6. LISCENCING AND DISTRIBUTION
  554.  
  555.     This program may be distributed free of charge, provided that no
  556. extra restrictions are placed on it.  Nominal charges for copying or
  557. on-line services are permitted provided that they are only for those
  558. services.  This program was written to help out the Amiga community, not 
  559. to make folks feel guilty.  Thus, no payment is required for its use.  
  560.  
  561.     I certainly don't mind donations, including donations of bug
  562. reports, comments, suggestions for future enhancements, macadamia nuts,
  563. or even software.  BUT PLEASE, DON'T SEND ME ANY PIRATED SOFTWARE.  YOU
  564. WILL REGRET IT.  I wouldn't have thought it necessary to mention this,
  565. given the quality of the people working with the Amiga (intelligent folks
  566. recognize superiority).  But I received several such disks from users of
  567. previous DiskSalv releases.  They all came from out of the country, and 
  568. served me just fine as blank disks.  But it really annoys me to see this.
  569. Anyway, at least until the end of June I can be reached at:
  570.  
  571.                 Dave Haynie
  572.         645 Allen Avenue
  573.         Gibbstown, NJ 08027
  574.  
  575.         BIX:    hazy
  576.         PLINK:    D-DAVE H
  577.         USENET:    ...!cbmvax!daveh
  578.  
  579. My electronic addresses changing.  If you really want to send money, I'm not
  580. going to refuse it or anything, but you may instead consider sending a 
  581. donation instead to:
  582.  
  583.         GreenPeace
  584.         1436 U Street NW
  585.         Washington, DC 20009
  586.  
  587. Tell me about it, and I'll include you in my registration files.  I know 
  588. you don't get rich from "ShareWare"; while I got some donations for 
  589. DiskSalv going all the way back to the beginning (which I'm certainly very
  590. grateful for), they didn't pay enough for me to try treating DiskSalv as
  591. a money-making venture, rather than just a hobby.  I wrote DiskSalv V1.40
  592. because it's needed, because I like to write programs in my spare time,
  593. and for my ego -- if I didn't write DiskSalv V1.40, someone else out
  594. there is going to write a better disk recovery program, and then mine
  595. won't be the best any more.  Don't know if DiskSalv V1.40 necessarily is
  596. the best these days, but I know it's the best DiskSalv so far.  Anyway,
  597. while DiskSalv's saving your disks, maybe the folks at GreenPeace will
  598. get a little extra money to save a few more important things, like clean
  599. air, clean water, and wildlife.  
  600.  
  601.  
  602. 7. CREDITS AND THANKS
  603.  
  604.     My thanks go out to the Amiga community in general, for all the
  605. good stuff they're doing.  Special thanks to:
  606.  
  607.     - Well, I switched back to Lattice on this one.  Nice going,
  608.       Mr. Toebes.  
  609.     - Bill Hawes, as always, for AREXX and WShell.
  610.     - The Arthur Guinness Company.
  611.     - The gang at PLINK for continued help.
  612.     - Joseph Armstrong, for restoring my faith in humanity by sending
  613.       me the first disk I've received from outside the USA in response
  614.       to DiskSalv that wasn't full of pirated stuff.  Ripper! 
  615.     - Folks who've found the latest round of bugs, the number of which 
  616.       actually seems to be shrinking; or supplied enhancement ideas
  617.       (thus opening up room for new bugs...) including:
  618.           Greg Berlin, Bruce Dawson, Joanne Dow, Marco Papa, 
  619.               D.C. Murphy, Steve Rosenthal
  620.               
  621.       
  622.                 -Dave Haynie
  623.                  April 2, 1989
  624.